﻿#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>


#include <stdio.h>
int* test()
{
	int n = 100;
	return &n;
}
int main()
{
	int* p = test();
	printf("%d\n", *p);
	return 0;
}

//#include <stdio.h>
//int main()
//{
//	int arr[10] = { 0 };
//	int* p = &arr[0];
//	int i = 0;
//	for (i = 0; i <= 11; i++)
//	{
//		//当指针指向的范围超出数组arr的范围时，p就是野指针
//		*(p++) = i;
//	}
//	return 0;
//}

//#include <stdio.h>
//int main()
//{
//	int* p;//局部变量指针未初始化，默认为随机值
//	*p = 20;
//	return 0;
//}


////指针的关系运算
//#include <stdio.h>
//int main()
//{
//	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
//	int* p = &arr[0];
//	int i = 0;
//	int sz = sizeof(arr) / sizeof(arr[0]);
//	while (p < arr + sz) //指针的⼤⼩⽐较
//	{
//		printf("%d ", *p);
//		p++;
//	}
//	return 0;
//}


//int main()
//{
//	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
//	printf("%d\n",&arr[9] - &arr[0]);
//	return 0;
//}

//#include <stdio.h>
// //指针+- 整数
//int main()
//{
//	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
//	int* p = &arr[0];
//	int i = 0;
//	int sz = sizeof(arr) / sizeof(arr[0]);
//	for (i = 0; i < sz; i++)
//	{
//		printf("%d ", *(p + i));//p+i 这⾥就是指针+整数
//	}
//	return 0;
//}

//int main()
//{
//	int a = 10;
//	int b = 20;
//	int* const p = &a;
//	//p = &b;     错误
//	//*p = 100;   成功
//	return 0;
//}

//int main()
//{
//	int a = 10;
//	void* pa = &a;
//	void* pc = &a;
//	*pa = 10;
//	*pc = 0;
//	return 0;
//}


//int main()
//{
//	int arr[5] = { 0 };
//	char* p = arr;
//	printf("%p\n", p + 1);
//	return 0;
//}


//int main()
//{
//	int a = 100;  //在内存中开辟一块空间
//	int* p = &a; //这里我们使用&操作符取出了变量a的地址
//	*p = 0;
//	return 0;
//}
//


//int main()
//{
//	int a = 10;  //在内存中开辟一块空间
//	int* p = &a; //这里我们使用&操作符取出了变量a的地址 
//	return 0;
//}